package com.cruise.game.service.admin;

import com.cruise.game.model.vo.common.PageResult;
import com.cruise.game.model.vo.user.WithdrawalDetailVO;
import com.cruise.game.model.vo.user.WithdrawalVO;

import java.time.LocalDate;
import java.util.Map;

/**
 * 管理员提现服务接口
 *
 * @author cruise
 * @date 2025-02-28
 */
public interface AdminWithdrawalService {

    /**
     * 获取提现申请列表
     *
     * @param status 状态
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param page 页码
     * @param pageSize 每页条数
     * @return 提现申请列表
     */
    PageResult<WithdrawalVO> getWithdrawalList(String status, LocalDate startDate, LocalDate endDate, Integer page, Integer pageSize);

    /**
     * 获取提现申请详情
     *
     * @param withdrawalId 提现申请ID
     * @return 提现申请详情
     */
    WithdrawalDetailVO getWithdrawalDetail(Long withdrawalId);

    /**
     * 处理提现申请
     *
     * @param withdrawalId 提现申请ID
     * @param approved 是否批准
     * @param remark 处理备注
     * @return 是否成功
     */
    boolean processWithdrawal(Long withdrawalId, Boolean approved, String remark);

    /**
     * 批量处理提现申请
     *
     * @param withdrawalIds 提现申请ID列表，逗号分隔
     * @param approved 是否批准
     * @param remark 处理备注
     * @return 处理结果
     */
    Map<String, Object> batchProcessWithdrawal(String withdrawalIds, Boolean approved, String remark);

    /**
     * 获取当日提现统计
     *
     * @return 统计信息
     */
    Map<String, Object> getTodayWithdrawalStatistics();
}